cuốn sách gpt4 ai đã làm

ruby - không dấu tương đương với FixNum âm

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 16:20:36 27 4
mua khóa gpt4 Nike

Làm cách nào để xác định cách giải thích không dấu của FixNum âm?

# bất ngờ, có thật
(~0b01111011).to_s(2) == ("-" + (~0b01111011).abs.to_s(2))

# dự kiến, sai
~0b01111011 == 0b10000100

Làm cách nào để viết một hàm như thế này:

123.unsigned_not(8) == 132

或者:

-124.unsigned(8) == 132

EDIT: Tôi có thể thực hiện điều đó thông qua chuỗi, nhưng giải pháp vẫn chưa thỏa đáng

lớp Fixnum
chắc chắn unsigned_not(bits=16)
to_s(2).rjust(bits,'0').gsub(/[01]/, '0' => '1', '1' => '0').to_i(2)
end
end

câu trả lời hay nhất

Fixnum#~ thực thi toán tử Phần bù của haiVà Ruby sử dụng các số lớn và số học tùy ý trong nội bộ, vì vậy nếu bạn muốn thực hiện phép đảo ngược trong một cơ số cố định, bạn cần phải làm việc trong phạm vi được yêu cầu và diễn giải kết quả tương ứng:

lớp Fixnum
def neg(base=8)
# xor với mức tối đa trong cơ sở cụ thể
tự ^ (2**cơ sở - 1)
end
end

132.neg #123
123.neg #132
~-124.neg # 132
132.to_s(2) # 1000010
132.neg.to_s(2) # 0111101
# kết quả khác nhau cho một cơ sở khác, như mong đợi
132.neg(16).to_s(2) # 111111110111101

Về ruby ​​​​- unsigned tương đương với FixNum âm, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/34145891/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress