Bilangan Bulat Python Show
Operator Biner, Byte, dan Bitwise dengan Python Tandai sebagai Selesai Bahan PendukungSlide Kursus Tutorial yang Direkomendasikan (. pdf) Contoh Kode (. ritsleting)
Jadilah Anggota untuk bergabung dalam percakapan Pelengkap dua bukanlah skema yang rumit dan tidak dilayani dengan baik oleh apa pun yang panjang. Oleh karena itu, setelah pengantar ini, yang menjelaskan apa itu komplemen dua dan bagaimana menggunakannya, kebanyakan ada contoh Pelengkap dua adalah cara setiap komputer yang saya kenal memilih untuk mewakili bilangan bulat. Untuk mendapatkan notasi negatif komplemen dua dari bilangan bulat, Anda menulis angka dalam biner. Anda kemudian membalikkan digit, dan menambahkan satu ke hasilnya Misalkan kita bekerja dengan kuantitas 8 bit (demi kesederhanaan) dan misalkan kita ingin menemukan bagaimana -28 akan diekspresikan dalam notasi komplemen dua. Pertama kita menulis 28 dalam bentuk biner 00011100 Lalu kita balikkan angkanya. 0 menjadi 1, 1 menjadi 0 11100011_ Lalu kita tambahkan 1 11100100 Begitulah cara seseorang menulis -28 dalam biner 8 bit Konversi dari Komplemen DuaGunakan angka 0xFFFFFFFF sebagai contoh. Dalam biner, yaitu 1111 1111 1111 1111 1111 1111 1111 1111 Apa yang bisa kita katakan tentang nomor ini? . Begitulah cara segala sesuatunya saling melengkapi. 1 di depan berarti angkanya negatif, 0 di depan berarti angkanya 0 atau positif Untuk melihat negatif dari angka ini, kami membalik tanda angka ini. Tapi bagaimana melakukannya? . 17) bahwa untuk membalikkan tanda Anda cukup membalikkan bit (0 menjadi 1, dan 1 menjadi 0) dan menambahkan satu ke angka yang dihasilkan Pembalikan dari bilangan biner itu, tentu saja 0000 0000 0000 0000 0000 0000 0000 0000_Kemudian kita tambahkan satu. 0000 0000 0000 0000 0000 0000 0000 0001 Jadi negatif dari 0xFFFFFFFF adalah 0x00000001, lebih dikenal dengan 1. Jadi 0xFFFFFFFF adalah -1 Konversi ke Komplemen DuaPerhatikan bahwa ini bekerja dua arah. Jika Anda memiliki -30, dan ingin merepresentasikannya dalam komplemen 2, Anda mengambil representasi biner dari 30 0000 0000 0000 0000 0000 0000 0001 1110_ Balikkan digitnya 1111 1111 1111 1111 1111 1111 1110 0001 Dan tambahkan satu 1111 1111 1111 1111 1111 1111 1110 0010_ Dikonversi kembali menjadi hex, ini adalah 0xFFFFFFE2. Dan memang, misalkan Anda memiliki kode ini #include int main() { int myInt; myInt = 0xFFFFFFE2; printf("%d\n",myInt); return 0; }_ Itu akan menghasilkan output -30. Cobalah jika Anda suka Aritmatika dengan Komplemen DuaSalah satu sifat bagus dari komplemen dua adalah penambahan dan pengurangan dibuat sangat sederhana. Dengan sistem seperti komplemen dua, sirkuit penjumlahan dan pengurangan dapat disatukan, sedangkan jika tidak, mereka harus diperlakukan sebagai operasi terpisah. Pada contoh di bagian ini, saya melakukan penjumlahan dan pengurangan dalam komplemen dua, tetapi Anda akan melihat bahwa setiap kali saya melakukan operasi sebenarnya dengan bilangan biner, saya selalu menjumlahkan Contoh 1Misalkan kita ingin menjumlahkan dua angka 69 dan 12. Jika kita menggunakan desimal, kita melihat jumlahnya adalah 81. Tapi mari kita gunakan biner, karena itulah yang digunakan komputer 111000110Bawa Baris 111000111(69) 111000112(12) 111000113(81) Contoh 2Sekarang misalkan kita ingin mengurangi 12 dari 69. Sekarang, 69 - 12 = 69 + (-12). Untuk mendapatkan negatif dari 12 kita ambil representasi binernya, balikkan, dan tambahkan satu 11100011_4 Balikkan digitnya 11100011_5 Dan tambahkan satu 11100011_6 Yang terakhir adalah representasi biner untuk -12. Seperti sebelumnya, kita akan menjumlahkan kedua angka tersebut 111000117Carry Row 111000111(69) 111000119(-12) 111001000(57) Kami menghasilkan 57, yaitu 69-12 Contoh 3Terakhir, kita kurangi 69 dari 12. Mirip dengan operasi kita pada contoh 2, 12 - 69 = 12 + (- 69). Representasi komplemen keduanya dari 69 adalah sebagai berikut. Saya menganggap Anda sudah cukup memiliki ilustrasi pembalik dan menambahkan satu 111001001Jadi kita tambahkan angka ini menjadi 12. 111001002Bawa Baris 111001003(12) 111001004(-69) 111001005(-57) Ini menghasilkan 12 - 69 = -57, yang benar Mengapa Pembalikan dan Menambahkan Satu BekerjaBalikkan dan tambahkan satu. Balikkan dan tambahkan satu. Itu berhasil, dan Anda mungkin ingin tahu alasannya. Jika Anda tidak peduli, lewati ini, karena ini hampir tidak penting. Ini hanya ditujukan bagi mereka yang penasaran mengapa teknik yang agak aneh itu sebenarnya masuk akal secara matematis Membalikkan dan menambahkan satu mungkin terdengar seperti hal yang bodoh untuk dilakukan, tetapi sebenarnya itu hanyalah jalan pintas matematis dari perhitungan yang agak mudah. Pinjaman dan PenguranganIngat trik lama yang kita pelajari di kelas satu tentang "meminjam satu" dari tempat sepuluh di masa depan untuk melakukan pengurangan? . Sebagai contoh, saya akan menggunakan 93702 minus 58358 111001006 Sekarang, lalu, apa jawaban untuk perhitungan ini? . Kita tidak dapat mengurangkan 8 dari 2, jadi kita akan meminjam angka dari tempat paling signifikan berikutnya (tempat puluhan) untuk menjadikannya 12 dikurangi 8. 12 dikurangi 8 adalah 4, dan kita catat 1 digit di atas kolom sepuluh untuk menandakan bahwa kita harus ingat untuk mengurangkan dengan satu pada iterasi berikutnya 111001007 Iterasi berikutnya adalah 0 dikurangi 5, dan dikurangi 1, atau 0 dikurangi 6. Sekali lagi, kita tidak dapat melakukan 0 dikurangi 6, jadi kita meminjam dari angka paling penting berikutnya sekali lagi untuk membuat 10 dikurangi 6, yaitu 4 11100100_8 Iterasi berikutnya adalah 7 dikurangi 3, dan dikurangi 1, atau 7 dikurangi 4. Ini adalah 3. Kita tidak perlu meminjam kali ini 11100100_9 Iterasi berikutnya adalah 3 dikurangi 8. Sekali lagi, kita harus meminjam untuk mendapatkan 13 dikurangi 8, atau 5 1111 1111 1111 1111 1111 1111 1111 11110 Iterasi berikutnya adalah 9 dikurangi 5, dan dikurangi 1, atau 9 dikurangi 6. Ini adalah 3. Kita tidak perlu meminjam kali ini 1111 1111 1111 1111 1111 1111 1111 11111 Jadi 93702 dikurangi 58358 adalah 35344 Meminjam dan Relevansinya dengan Negatif AngkaSaat Anda ingin menemukan negatif suatu angka, Anda mengambil angka tersebut, dan menguranginya dari nol. Sekarang, misalkan kita benar-benar bodoh, seperti komputer, dan alih-alih hanya menulis tanda negatif di depan angka A saat kita mengurangkan A dari 0, kita benar-benar melakukan langkah-langkah mengurangkan A dari 0 Ambil perhitungan bodoh berikut dari 0 dikurangi 3 1111 1111 1111 1111 1111 1111 1111 11112 1111 1111 1111 1111 1111 1111 1111 11113 1111 1111 1111 1111 1111 1111 1111 11114 1111 1111 1111 1111 1111 1111 1111 11115 1111 1111 1111 1111 1111 1111 1111 11116 Dan lain-lain, dan lain-lain. Kami akan berakhir dengan angka yang terdiri dari 7 di digit satu, 9 di setiap digit lebih penting daripada tempat 100 Sama di BinerKita bisa melakukan hal yang kurang lebih sama dengan biner. Dalam contoh ini saya menggunakan bilangan biner 8 bit, tetapi prinsipnya sama untuk bilangan biner 8 bit (karakter) dan bilangan biner 32 bit (ints). Saya mengambil angka 75 (dalam 8 bit biner yaitu 010010112) dan kurangi dari nol Kadang-kadang saya berada dalam posisi di mana saya mengurangkan 1 dari nol, dan juga mengurangkan 1 pinjaman lainnya ________3______71111 1111 1111 1111 1111 1111 1111 11118 1111 1111 1111 1111 1111 1111 1111 11119 0000 0000 0000 0000 0000 0000 0000 00000 0000 0000 0000 0000 0000 0000 0000 00001 11100011_4_______2 0000 0000 0000 0000 0000 0000 0000 00003 0000 0000 0000 0000 0000 0000 0000 00004 0000 0000 0000 0000 0000 0000 0000 00005 Jika kami mau, kami bisa melangkah lebih jauh, tetapi tidak ada gunanya. Di dalam komputer, hasil perhitungan ini akan diberikan ke variabel delapan bit, sehingga setiap bit di luar yang kedelapan akan dibuang. Dengan fakta bahwa kita hanya akan mengabaikan digit tambahan apa pun, apa bedanya pada hasil akhir dengan mengurangkan 01001011 dari 100000000 (satu bit diikuti oleh 8 bit nol) daripada 0? . Jika kita melakukan itu, kita berakhir dengan hasil yang sama 0000 0000 0000 0000 0000 0000 0000 0000_6 Jadi untuk menemukan angka negatif n-bit di komputer, kurangi angka dari 0 atau kurangi dari 2n. Dalam biner, kekuatan dua ini akan menjadi satu bit diikuti oleh n nol bit Dalam kasus angka 8-bit, itu akan menjawab dengan baik jika kita mengurangi angka kita dari (1 + 11111111) daripada 100000000 0000 0000 0000 0000 0000 0000 0000 0000_7 Dalam biner, ketika kita mengurangi angka A dari angka semua 1 bit, yang kita lakukan adalah membalikkan bit A. Jadi operasi pengurangan sama dengan membalikkan bit angka. Lalu, kita tambahkan satu Jadi, bagi komputer, mengambil angka negatif, yaitu mengurangkan angka dari 0, sama dengan membalikkan bit dan menambahkan satu, dari situlah triknya berasal Bagaimana Anda mengonversi bilangan bulat menjadi byte dengan Python?Nilai int dapat diubah menjadi byte dengan menggunakan metode int. to_bytes() .
Bagaimana Anda mengonversi angka negatif dengan Python?Dalam Python, angka positif dapat diubah menjadi angka negatif dengan bantuan metode bawaan yang disediakan di pustaka Python bernama abs (). When abs () is used, it converts negative numbers to positive. However, when -abs () is used, then a positive number can be changed to a negative number.
Bisakah byte menyimpan angka negatif?Dalam C#, sebuah byte mewakili bilangan bulat 8-bit yang tidak bertanda tangan, dan karenanya tidak dapat menyimpan nilai negatif (nilai yang valid berkisar dari 0 . Alternatifnya adalah sbyte , yang merupakan integer 8-bit yang ditandatangani (nilai valid dari -128 hingga 127 ). Simpan jawaban ini.
Apa itu byte negatif?Konversi nilai bilangan bulat dari 128 hingga 255 menjadi satu byte menghasilkan apa yang dilihat Java sebagai angka negatif. |