Mysql
 sql >> база данни >  >> RDS >> Mysql

съхраняване на отрицателно число в десетичното поле на таблицата на mysql от версия 5.0.3

Доколкото разбирам, в документацията се казва, че няма да съхранява литерал "-" знак , което означава, че вероятно сега прави това, което другите подписани INTEGER полета винаги са правили и вместо това съхранява знаков бит за обозначаване на отрицателни числа.

Все още виждате знак минус пред числото, защото се генерира от MySQL в резултат на този знаков бит.

Ако не разбирате знаковия бит, можете да помислите как подписан байт може да съхранява числа от -128 до 127, докато неподписан байт може да съхранява числа от 0 до 255. Това е така, защото един от 8-те бита в числото със знак е се използва за съхранение на +/- (1 е отрицателно, 0 е положително), докато останалите битове предлагат числа до 2^7 (-128 или 127).

Така, например, ако битовете 1111 имат знаков бит, те биха били равни на -7 (отрицателни+4+2+1), но ако са без знак, те биха били равни на 15 (8+4+2+1). Все още се съхранява същото количество битове.

Може да се чудите защо отрицателната граница в числото със знак може да използва 8-ия бит, докато положителната граница е ограничена до сбора от 7 бита (1 по-малко от 8-ия бит). Това е така, защото 10000000 се счита за отрицателен и 8-ми бит едновременно, тъй като неговото представяне на -0 в противен случай е излишно с 00000000, което представлява 0. Няма разлика между отрицателна и положителна нула, така че отрицателният най-значим бит винаги е стойността на самия бит (но отрицателен).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Как да нулирам или променям паролата за root на MySQL?

  2. Валидиране на формуляра

  3. Innodb; множество директории с данни

  4. Хибернация на диалект за MySQL 8?

  5. MySQL срещу JSON - Защо?